﻿using ServicioEmpresa.DataSetEmpresaTableAdapters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace ServicioEmpresa
{
    public class ServicioConsultorEmpresa : IService
    {


        private static bool estaVaciaLaTabla(DataSetEmpresa.empresaDataTable tabla)
        {
            return (tabla.Rows.Count == 0);
        }


        private static Empresa ArmarEmpresaAPartirDeUnRegistro(DataSetEmpresa.empresaRow registro)
        {
            Empresa empresaADEvolver = null;

            if (registro == null)
            {
                return empresaADEvolver;
            }

            empresaADEvolver = new Empresa();
            empresaADEvolver.Codigo = registro.Codigo;
            empresaADEvolver.Id = registro.id;
            empresaADEvolver.Nombre = registro.Nombre;

            return empresaADEvolver;
        }

       


        public Empresa ObtenerEmpresaConId(int idEmpresa)
        {
            Empresa empresaADEvolver = null;
            DataSetEmpresa.empresaDataTable tablaConUnicoRegistro = CAD_Empresa.ObtenerEmpresaConId(idEmpresa);
            if (estaVaciaLaTabla(tablaConUnicoRegistro))
            {
                empresaADEvolver = null;
                return empresaADEvolver;
            }
            DataSetEmpresa.empresaRow registro = (DataSetEmpresa.empresaRow)tablaConUnicoRegistro.Rows[0];
            empresaADEvolver = ArmarEmpresaAPartirDeUnRegistro(registro);
            return empresaADEvolver;
        }

       
        

        public List<Empresa> ObtenerTodasLasEmrpesas()
        {
            List<Empresa> empresasADevolver = new List<Empresa>();
            DataSetEmpresa.empresaDataTable tablaConVariosRegistros = CAD_Empresa.ObtenerTodasLasEmpresas();

            foreach (DataSetEmpresa.empresaRow registro in tablaConVariosRegistros.Rows)
            {
                Empresa empresa = ArmarEmpresaAPartirDeUnRegistro(registro);
                empresasADevolver.Add(empresa);
            }
            return empresasADevolver;
        }


        public bool ExisteEmpresaConCodigoYconIdDiferente(String codigo, int idEmpresa)
        {
            DataSetEmpresa.empresaDataTable tablaConUnRegistro = CAD_Empresa.ObtenerEmpresaConIdYConCodigoDiferente(idEmpresa, codigo);
            if (estaVaciaLaTabla(tablaConUnRegistro))
            {
                return false;
            }

            return true;
        }



        public Empresa ObtenerEmpresaConCodigo(string codigo)
        {
            Empresa empresaADEvolver = null;
            DataSetEmpresa.empresaDataTable tablaConUnicoRegistro = CAD_Empresa.ObtenerEmpresaConCodigo(codigo);
            if (estaVaciaLaTabla(tablaConUnicoRegistro))
            {
                empresaADEvolver = null;
                return empresaADEvolver;
            }
            DataSetEmpresa.empresaRow registro = (DataSetEmpresa.empresaRow)tablaConUnicoRegistro.Rows[0];
            empresaADEvolver = ArmarEmpresaAPartirDeUnRegistro(registro);
            return empresaADEvolver;
        }
    }
}
